// 用户管理

package role

import (
	dbModel "ZHONGYIHANGYAN/bean/dbModel"
	"ZHONGYIHANGYAN/cfg"
	"ZHONGYIHANGYAN/mysql"
	"fmt"
	"time"
)

type RoleManage struct {
	mysql.DataBase
}

var defaultRoleManage = &RoleManage{}

func Manage() *RoleManage {
	return defaultRoleManage
}

// 初始化通道相关的表
func InitTable(DB *mysql.MysqlGorm) {
	defaultRoleManage.DataBase = DB

	/* 自动创建表结构 */
	defaultRoleManage.autoMigrate()

	// 创建默认角色
	defaultRoleManage.CreateDefaultRole()
}

// 自动创建表结构
func (m *RoleManage) autoMigrate() {
	m.DataBase.AutoMigrate(&dbModel.Role{})
}

// 创建默认角色
func (m *RoleManage) CreateDefaultRole() {
	db := m.DataBase.DB()

	// 步骤1: 删除数据库中id包含"default-role"字符的角色
	var existingRoles []dbModel.Role
	db.Where("id LIKE ?", "%default-role%").Find(&existingRoles)

	for _, role := range existingRoles {
		// 删除角色
		db.Delete(&role)
	}

	// 步骤2: 根据data.json中的默认角色数据全量创建角色
	for _, roleCfg := range cfg.Data.DefaultRoleList {
		// 创建角色
		role := dbModel.Role{
			Id:         roleCfg.Id,
			Name:   roleCfg.Name,
			Desc:   roleCfg.Desc,
			DefaultRole: true,
			CreateTime: time.Now(),
			UpdateTime: time.Now(),
		}

		if err := db.Create(&role).Error; err != nil {
			fmt.Printf("创建角色失败: %v\n", err)
			continue
		}
	}
}
